package com.zaimokuza.cn.mapper;

import com.github.pagehelper.Page;
import com.zaimokuza.cn.entity.blog.BlogTagRelation;
import com.zaimokuza.cn.entity.blog.Tag;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

/**
 * @author zaimokuza
 */
@Mapper
public interface TagMapper {

    /**
     * 添加标签
     *
     * @param tag 标签信息
     */
    void insertRecord(Tag tag);

    /**
     * 批量添加文章和标签关联记录
     *
     * @param list 文章标签关联信息集合
     */
    void insertBatchRelation(ArrayList<BlogTagRelation> list);

    /**
     * 更新标签
     *
     * @param tag 标签信息
     */
    void updateRecord(Tag tag);

    /**
     * 删除标签
     *
     * @param id 标签ID
     */
    void deleteRecord(String id);

    /**
     * 根据标签ID批量删除博客标签关联关系
     *
     * @param tagId 标签ID
     */
    void deleteBatchRelation(String tagId);

    /**
     * 根据博客ID批量删除博客标签关联信息
     *
     * @param blogId 博客ID
     */
    void deleteBatchRelationByBlogId(String blogId);

    /**
     * 查询标签集合
     *
     * @param userId 用户ID
     * @return 标签信息集合
     */
    ArrayList<Tag> queryTagList(String userId);

    /**
     * 根据博客ID查询标签集合
     *
     * @param blogId 博客ID
     * @return 博客的标签集合
     */
    ArrayList<Tag> queryTagListByBlogId(String blogId);

    /**
     * 根据博客ID查询标签ID集合
     *
     * @param blogId 博客ID
     * @return 博客的标签ID集合
     */
    ArrayList<String> queryTagIdListByBlogId(String blogId);

    /**
     * 查询标签分页集合
     *
     * @param name     标签名称
     * @param userName 用户名称
     * @return 标签分页集合
     */
    Page<Tag> queryTagPage(@Param("name") String name, @Param("userName") String userName);

    /**
     * 查询名称是否重复
     *
     * @param id     ID
     * @param userId 用户ID
     * @param name   名称
     * @return 1:重复;null:不重复
     */
    Integer queryNameIsRepeat(@Param("id") String id, @Param("userId") String userId, @Param("name") String name);

}
